bleh
[mqlkit.git] / indicators / TSD_CyAn_4_Cyber Cycle.mq4
blob9075af08e40f59d606e6a0d68f588e41ccbd1b75
1 //+------------------------------------------------------------------+\r
2 //|                                               Cyber Cycle        |\r
3 //|                         Copyright © 2006, Luis Guilherme Damiani |\r
4 //|                                      http://www.damianifx.com.br |\r
5 //|\r
6 //+------------------------------------------------------------------+\r
7 #property copyright "Copyright © 2006, Luis Guilherme Damiani"\r
8 #property link      "http://www.damianifx.com.br"\r
9 \r
10 #property indicator_buffers 3\r
11 #property indicator_separate_window\r
12 //#property indicator_chart_window\r
14 #property indicator_color1 Red\r
15 #property indicator_color2 LightBlue\r
16 #property indicator_color3 Yellow\r
18 //---- input parameters\r
19 extern double       alpha=0.07;\r
20 //extern int       maxbars=2000;\r
21 extern double lag_signal2=9;\r
22 //extern bool stochfish=true;\r
23 //extern int stochfish_window=8;\r
24 extern string \r
25 Price_Choice="-----  Typical or Median  --------------";\r
26 extern bool is_median=true;\r
28 //---- buffers\r
29 double ind1[];\r
30 double ind2[];\r
31 double ind3[];\r
32 double AuxBuffer[]; //Smooth\r
34 double alpha2;\r
35 //+------------------------------------------------------------------+\r
36 //| Custom indicator initialization function                         |\r
37 //+------------------------------------------------------------------+\r
38 int init()\r
39   {\r
40 //---- indicators\r
41    SetIndexStyle(0,DRAW_LINE);\r
42    SetIndexBuffer(0,ind1);\r
43    SetIndexStyle(1,DRAW_LINE);\r
44    SetIndexBuffer(1,ind2);\r
45    SetIndexStyle(2,DRAW_LINE);\r
46    SetIndexBuffer(2,ind3);\r
47    SetLevelValue(0,0.0);\r
48 //   SetLevelValue(1,-0.8);\r
49 //   ArrayInitialize(ind1,0.0);\r
50 //   ArrayInitialize(ind2,0.0);\r
51 //   ArrayInitialize(ind3,0.0);\r
52    ArrayResize(AuxBuffer,Bars);\r
53 //   ArrayInitialize(AuxBuffer,0.0);\r
54    alpha2=1/(lag_signal2+1);  \r
55    \r
56 //----\r
57    return(0);\r
58   }\r
59 //+------------------------------------------------------------------+\r
60 //| Custor indicator deinitialization function                       |\r
61 //+------------------------------------------------------------------+\r
62 int deinit()\r
63   {\r
64 //---- \r
65    \r
66 //----\r
67    return(0);\r
68   }\r
69 //+------------------------------------------------------------------+\r
70 //| Custom indicator iteration function                              |\r
71 //+------------------------------------------------------------------+\r
73 int start()\r
74   {\r
75       double pr0,pr1,pr2,pr3=0;\r
76       \r
77       int    counted_bars=IndicatorCounted();\r
78     \r
79       //---- check for possible errors\r
80       if(counted_bars<0) return(-1);\r
81       int limit=Bars-counted_bars;\r
82   //    if(limit>maxbars)limit=maxbars;      \r
83       //if (limit>Bars-1)limit=Bars-1;   \r
84       //---- \r
85       for (int i = limit; i>=0;i--)\r
86       {\r
87          if(is_median)\r
88          {\r
89             pr0=(High[i]+Low[i])/2;\r
90             pr1=(High[i+1]+Low[i+1])/2;\r
91             pr2=(High[i+2]+Low[i+2])/2;\r
92             pr3=(High[i+3]+Low[i+3])/2;            \r
93          }\r
94          else\r
95          {\r
96             pr0=(High[i]+Low[i]+Close[i])/3;\r
97             pr1=(High[i+1]+Low[i+1]+Close[i+1])/3;\r
98             pr2=(High[i+2]+Low[i+2]+Close[i+2])/3;      \r
99             pr3=(High[i+3]+Low[i+3]+Close[i+3])/3;      \r
100          }\r
101               \r
102               AuxBuffer[i]= (pr0+2*pr1+2*pr2+pr3)/6;\r
103               \r
104               ind1[i]=MathPow(1-0.5*alpha,2)*(AuxBuffer[i]-2*AuxBuffer[i+1]+AuxBuffer[i+2])\r
105                       +2*(1-alpha)*ind1[i+1]\r
106                       -MathPow(1-alpha,2)*ind1[i+2];\r
107               \r
108               ind2[i]=ind1[i+1];\r
109               ind3[i]=alpha2*ind1[i]+(1-alpha2)*ind3[i+1];\r
110          \r
111        }\r
112    \r
113 //----\r
114    return(0);\r
115   }\r
116 //+------------------------------------------------------------------+